Data compression involves encoding data using fewer elements than present in uncompressed (original) data. Lossless data compression exploits statistical redundancies such that no portions of the original data are lost when the original data is compressed, which is in contrast to lossy compression, where portions of the original data are lost during compression. Lossless compression thus allows for creation of compressed data, where the exact original data can be reconstructed from the compressed data.
The ratio between uncompressed data size and compressed data size is referred to as the compression rate. As the compression rate corresponding to the data increases, an amount of information represented by compressed data likewise increases. Accordingly, more information can be retained in a given amount of memory storage or transmitted over a communications channel with a given transmission bandwidth as the compression rate increases. Generally, however, information represented by compressed data is inaccessible until the compressed data is decompressed, and as a compression rate increases, time required to decompress the data likewise increases.
In applications where compressed data is being continuously received, it may be desirable to be able to use and/or view information represented thereby as the data is received. For example, rather than decompressing an entire video file before viewing it, if individual frames can be decompressed as fast as the rate at which the frames are displayed, the video can be viewed without interruption, while compressed data is received. In such a case, however, resolution of the video is limited by a transmission capacity of a transmission channel over which the video is received, and further limited by resources needed to decompress the data in real-time. For example, with respect to video received from a satellite, the satellite may have a broadcast bandwidth limit of, for instance, 10 MB/sec. In order to pack more information into a transmission, a higher compression rate can be used, so long as the transmission can be decompressed as fast as it is received. For example, with respect to compressed data having a 3:1 compression ratio, decompressing one second of video (e.g., 10 MB of data) received over the transmission channel to 30 MB of uncompressed data may take more than the one second (e.g., the compressed data is received more quickly than it can be decompressed).
The decompression rate is determined by the algorithm used to compress data as well as capabilities of a system that decompresses the data. Application Specific Integrated Circuits (ASICs) specially designed to decompress a specific type of encoding (compression) have been shown to achieve decompression rates of about 80 MB/sec. Software implemented solutions that exploit improvements in central processing unit (CPU) processing power have achieved decompression rates as high as 150 MB/sec. For various applications, however, higher decompression rates are desirable.